/****************************************************************
 *  This file created by writerB.php on 03/19/2007 at 11:51:15  *
 ****************************************************************
 *  writerB.php created by Tonk (tonk@ctonk.com) in 2007        *
 ****************************************************************
 *                 General Document Information
 *
 *  File Name: reset.h
 *  Class Name: Reset
 *  Parent Classes: none
 *  Data members: 7
 *  Notes:
 ****************************************************************/

#ifndef __H_RESET
#define __H_RESET

#include <iostream>



class Reset {
	protected:
		// Protected data...
		int				_ResetID;	// Holds a unique value for every instantiation.
		unsigned		_vnum;
		unsigned		_type;
		unsigned		_target;	// Holds target mob/object vnum to be loaded
		unsigned		_number;	// Holds the number of <target>s to be loaded
		unsigned		_limit;		// Holds the maximum number of <target>s to exist in area at one time
		unsigned		_in;		// Holds reset number of object/mob to load unsignedo
		unsigned		_at;		// If _in is a mob, _at holds the wear location to which the object should load

		// Protected methods...
		void	setResetID( const int& ResetID );

	public:
		// Constructors...
		Reset();
		Reset( const Reset& );	// Doesn't change _ResetID
		~Reset();

		// Operators...
		Reset& operator = ( const Reset& );		// Doesn't change _ResetID
		bool operator == ( const Reset& ) const;	// Compares _vnum
		bool operator != ( const Reset& ) const;	// Compares _vnum
		bool operator < ( const Reset& ) const;	// Compares _vnum
		bool operator > ( const Reset& ) const;	// Compares _vnum

		// Public accessor methods...
		int			getResetID( void ) const;
		void		setVnum( const unsigned& vnum );
		unsigned	getVnum( void ) const;
		void		setType( const unsigned& type );
		unsigned	getType( void ) const;
		void		setTarget( const unsigned& target );
		unsigned	getTarget( void ) const;
		void		setNumber( const unsigned& number );
		unsigned	getNumber( void ) const;
		void		setLimit( const unsigned& limit );
		unsigned	getLimit( void ) const;
		void		setIn( const unsigned& in );
		unsigned	getIn( void ) const;
		void		setAt( const unsigned& at );
		unsigned	getAt( void ) const;

		// General methods...
		char	type2char( void ) const;

		// Static members and methods...
		static int	resetIndex;	// Used to create a unique id for every Reset object
		static int	numResets;	// Keeps track of the total number of Reset objects
		static unsigned string2type( const std::string& type );
};

// Associated operators...
std::ostream& operator << ( std::ostream&, Reset& );
std::ostream& operator << ( std::ostream&, Reset* );
std::istream& operator >> ( std::istream&, Reset& );
std::istream& operator >> ( std::istream&, Reset* );



#endif // __H_RESET
